<?php
class Usuarios {
  private $id_usuario;
  private $id_cliente;
  private $senha;
  private $email;
  private $email_alter;

  private $nome_cliente;
  
  public function __construct($sFiltro = "", $sOrdem = "id_usuario") {
    global $oDB;
    $sSQL = "SELECT usuarios.id_usuario, usuarios.id_cliente, usuarios.senha, usuarios.email, usuarios.email_alter, clientes.nome FROM usuarios";
    $sSQL = " INNER JOIN clientes ON (clientes.id_cliente = usuarios.id_cliente)";
    if ($sFiltro) {
      $sSQL .= " WHERE ($sFiltro)";
    }
    if ($sOrdem) {
      $sSQL .= " ORDER BY $sOrdem";
    }
    if (!empty($sFiltro)) {
      $oRes = $oDB->Execute($sSQL);
      if ($oRes == false) {
        trigger_error($oDB->ErrorMsg());
      } else {
        $this->id_usuario = $oRes->fields['id_usuario'];
        $this->id_cliente = $oRes->fields['id_cliente'];
        $this->senha = $oRes->fields['senha'];
        $this->email = $oRes->fields['email'];
        $this->email_alter = $oRes->fields['email_alter'];
      }
    }
  }
  
  public function getId_usuario() {
    return $this->id_usuario;
  }
  public function setId_usuario($valor) {
    $this->id_usuario = $valor;
  }
  
  public function getId_cliente() {
    return $this->id_cliente;
  }
  public function setId_cliente($valor) {
    $this->id_cliente = $valor;
  }

  public function getNome_cliente() {
    return $this->nome_cliente;
  }
  
  public function getSenha() {
    return $this->senha;
  }
  public function setSenha($valor) {
    $this->senha = md5($valor);
  }
  
  public function getEmail() {
    return $this->email;
  }
  public function setEmail($valor) {
    $this->email = $valor;
  }
  
  public function getEmail_alter() {
    return $this->email_alter;
  }
  public function setEmail_alter($valor) {
    $this->email_alter = $valor;
  }
  
  public function atualizar() {
    global $oDB;
    $campos = array(
      'id_cliente' => $this->id_cliente,
      'senha' => $this->senha,
      'email' => $this->email,
      'email_alter' => $this->email_alter,
    );
    if ($this->id_usuario > 0) {
      $oDB->AutoExecute('usuarios', $campos, 'UPDATE', 'id_usuario = '.intval($this->id_usuario));
    } else {
      $sSQL = 'SELECT MAX(id_cliente) as id_cliente FROM clientes';
      $oRes = $oDB->execute($sSQL);

      $campos['id_cliente'] = $oRes->fields['id_cliente'];

      $oDB->AutoExecute('usuarios', $campos, 'INSERT');
    }
  }
  public function excluir($aIds) {
    global $oDB;
    $sIds = implode(',', $aIds);
    $sSQL = 'DELETE FROM usuarios WHERE id_usuario IN ('. $sIds .')';
    $oRes = $oDB->execute($sSQL);
    if ($oRes != false) {
      return true;
    }
  }
  public static function listar($filtro = "", $sOrdem = "id_usuario") {
    global $oDB;
    $lista = array();
    $sSQL = "SELECT id_usuario, id_cliente, senha, email, email_alter FROM usuarios";
    if ($filtro) {
      $sSQL .= " WHERE ($filtro)";
    }
    if ($sOrdem) {
      $sSQL .= " ORDER BY $sOrdem";
    }
    $oRes = $oDB->Execute($sSQL);
    if ($oRes == false) {
      trigger_error($oDB->ErrorMsg());
    } else {
      while (!$oRes->EOF) {
        $linha = new self();
        $linha->id_usuario = $oRes->fields['id_usuario'];
        $linha->id_cliente = $oRes->fields['id_cliente'];
        $linha->senha = $oRes->fields['senha'];
        $linha->email = $oRes->fields['email'];
        $linha->email_alter = $oRes->fields['email_alter'];
        $lista[] = $linha;
        
        $oRes->MoveNext();
      }
    }
    return $lista;
  }
  
}
?>
